package com.koron.plan.web.repairplan.service;

import com.koron.bean.workflow.RedirectQuery;
import com.koron.plan.web.repairplan.bean.query.PlanPackageQuery;
import com.koron.plan.web.repairplan.bean.vo.PackageStatVO;
import com.koron.plan.web.repairplan.bean.vo.PlanPackageVO;
import org.koron.ebs.mybatis.SessionFactory;

import java.util.List;

/**
 * @author twcao
 * @title: PlanPackageService
 * @projectName GDH_EAM_V2
 * @description: 检修计划包service
 * @date 2021/9/1310:17
 */
public interface PlanPackageService {

    /**
     * 根据计划包获取详情
     * @param factory
     * @param packageId
     * @return
     */
    PlanPackageVO queryById(SessionFactory factory, String packageId);

    /**
     * 根据检修计划报统计
     * @param factory 会话
     * @param packageId 检修计划报id
     * @param deptId 主办单位id
     * @return
     */
    PackageStatVO statById(SessionFactory factory, String packageId, String deptId);

    /**
     * 检修计划包分页查询
     * @param factory 会话
     * @param query 查询条件
     * @return 符合条件的集合
     */
    List<PlanPackageVO> queryList(SessionFactory factory, PlanPackageQuery query);

    /**
     * 新增或修改
     * @param factory 会话
     * @param vo 实体
     * @return 返回保存后的实体
     */
    PlanPackageVO saveOrUpdate(SessionFactory factory, PlanPackageVO vo);

    /**
     * 删除检修计划包
     * @param factory 会话
     * @param packageId 计划包id
     * @return 删除的检修计划包
     */
    PlanPackageVO deleteById(SessionFactory factory, String packageId);

    /**
     * 更新检修计划检修包工作流状态
     * @param factory
     * @param packageId
     * @return
     */
    Boolean updateState(SessionFactory factory, String packageId);

    /**
     * 工作流更新
     * @param factory
     * @param redirectQuery
     */
    Boolean workflowUpdate(SessionFactory factory, RedirectQuery redirectQuery);

    /**
     * 工作流完结
     * @param factory
     * @param redirectQuery
     * @return
     */
    Boolean updateEnd(SessionFactory factory, RedirectQuery redirectQuery);
}
